package com.market.service;

import com.market.entity.Bill;
import com.market.utils.PageResult;

import java.util.List;
import java.util.Map;

public interface BillService {
    // 查询所有账单
    List<Bill> findAll();
    
    // 根据ID查询账单
    Bill findById(Long id);
    
    // 根据条件查询账单
    List<Bill> findByCondition(String productName, Long providerId, Integer isPayment);
    
    // 分页查询账单
    PageResult<Bill> findByConditionPage(String productName, Long providerId, Integer isPayment, 
                                    String billCode, Integer currentPage, Integer pageSize);
    
    // 添加账单
    Map<String, Object> add(Bill bill);
    
    // 修改账单
    Map<String, Object> update(Bill bill);
    
    // 删除账单
    Map<String, Object> deleteById(Long id);
    
    // 检查供应商是否有关联账单
    boolean hasRelatedBills(Long providerId);
    
    // 检查账单编码是否已存在
    boolean isBillCodeExists(String billCode);
    
    // 检查账单编码是否已存在（排除指定ID）
    boolean isBillCodeExistsExcludeId(String billCode, Long id);
    
    // 获取账单统计数据（今日、昨日、本周、本月账单数）
    Map<String, Object> getStatBillCount();
    
    // 获取最近7天账单数量趋势
    List<Map<String, Object>> getLast7DaysBillCount();
    
    // 获取最近7天账单金额趋势
    List<Map<String, Object>> getLast7DaysBillAmount();
}
